如果模組越來越大的時候,就必須要開始思考怎麼切割模組了,在切模組的過程中,我們將遇到一些挑戰如下:
怎麼管理模組化的原始碼,常見的方式有兩種策略 Monorepo 和 Polyrepo。
因為切成多個子模組後,每個子模組開始有各自的版號,所以又可分成以下這兩種模式:
固定模式 (fix mode)
固定模式顧名思義就是固定用一個版號,如果 app-api-server
模組有更動需要升版,即使根本沒動到 app-core
模組的程式碼,我們還是會把三個模組都提升到同樣的版號。
{
"app-api-server": "0.1.0",
"app-socket-server": "0.1.0",
"app-core": "0.1.0"
}
獨立模式 (independent mode)
獨立模式則是子模組可以依照實際情況,獨立的升級版號。
{
"app-api-server": "0.2.5",
"app-socket-server": "0.1.3",
"app-core": "0.1.0"
}
切成個別模組之後,它們之間要怎麼讀到最新版的程式碼?難道每次都要發佈到 npm 上嗎?如果我程式還沒有要公開發佈的話怎麼辦?
這時候我們可以用 npm link
。
如果模組一多後,怎麼統一管理諸多的子模組,也是一個頭痛的問題。別擔心,早就有相關的工具在生態系上了,我們只要知道怎麼使用就好了。
下一篇,我們將參考 Open Source 專案來慢慢探討這些事。